package com.cxc.decorate;
/**
 * 装饰模式：是一种用于代替继承的技术，无需通过继承增加子类刘能扩展对象的新功能，使用
 * 对象的关联关系代替继承关系，更加灵活，同时 避免类型体系的快速膨胀。
 * 动态增加	或删除对象职责
 * 实现方式：
 * Spring中⽤到的包装器模式在类名上有两种表现：⼀种是类名中含有Wrapper，另⼀种是类名中含有Decorator。
 * 实质：动态地给⼀个对象添加⼀些额外的职责。
 * 就增加功能来说，Decorator模式相⽐⽣成⼦类更为灵活。
 * 比如： IO流  HttpServletRequestWrapper
 */
public class Client {
	
	public static void main(String[] args) {
		
		Car  car = new Car();
		/*car.move();
		FlyCar flycar = new FlyCar(car);
		flycar.move()*/;
		WaterCar  waterCar = new WaterCar(new AICar(new FlyCar(car) ));
		waterCar.move();
		
	}
}
